/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package InterfaceGUI;

import data.*;
//import datenbank.kalenderMapper;
import java.text.ParseException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Container.*;
import java.rmi.Naming;
import javax.swing.text.MaskFormatter;
import java.rmi.RemoteException;
import java.net.MalformedURLException;
import java.rmi.NotBoundException;
import java.util.Vector;
/**
 *
 * @author Tobias
 */
public class kalenderEditierenAuswahl {

JButton editieren;
JButton abbrechen;
JFrame frame;
JLabel listelabel;
JComboBox kalender;
String Bezeichnung;
String Besitzer;
String Zugriffsberechtigte;
int ID;

public String Bezeichnung() {
        return Bezeichnung;
    }

public String Besitzer() {
        return Besitzer;
    }

public String Zugriffsberechtigte() {
        return Zugriffsberechtigte;
    }


public static void main(String[] args) {
        kalenderEditierenAuswahl gui = new kalenderEditierenAuswahl();
        gui.kalenderAktualisieren();
        }


public void kalenderAktualisieren(){

frame = new JFrame("Kalender editieren");

JPanel editierenPanel = new JPanel();

GridBagLayout gbl = new GridBagLayout();

editierenPanel.setLayout(gbl);

GridBagConstraints constraints = new GridBagConstraints();

listelabel = new JLabel("Bitte wählen Sie einen gewünschten Kalender:");
listelabel.setFont(new Font("Arial",18,18));

constraints.insets = new Insets( 16,16,16,16 );
constraints.anchor = GridBagConstraints.WEST;
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 0;
editierenPanel.add(listelabel, constraints);


try {
    // Zunächst benötigen wir eine Verbindung mit der Verwaltung.
    Verwaltung verwaltung =
        (Verwaltung)Naming.lookup("rmi:/localhost:1099/DRM");


    Vector<Kalender> ergebnis1 = verwaltung.getAll_Kalender();
    Vector inhalte = new Vector();

    //Hier wird dem Vector 'inhalte' das Objekt kalender mit dem Element Bezeichnung
    //übergeben und der Combobox 'kalender' hinzugefügt
    for ( Kalender test : ergebnis1 ) {
        if (test != null ) {
                inhalte.add(test.get_bezeichnung());
        }
    }

    kalender = new JComboBox(inhalte);
    //kalender = new JComboBox();
    Dimension groesseSammelwerk = new Dimension(300, 25);
    kalender.setPreferredSize(groesseSammelwerk);
    constraints.gridwidth = GridBagConstraints.REMAINDER;
    constraints.weightx = 1;
    constraints.fill = GridBagConstraints.NONE;
    editierenPanel.add(kalender, constraints);

    }
    catch (MalformedURLException murle) {
            System.out.println("MalformedURLException");
            System.out.println(murle);
    }
    catch (RemoteException re) {
            System.out.println("RemoteException");
            System.out.println(re);
    }
    catch (NotBoundException e) {
            System.out.println("NotBoundException");
            System.out.println(e);
    }
    catch (NullPointerException np) {
            System.out.println("NullPointerException");
            System.out.println(np);
    }

editieren = new JButton("editieren");
constraints.insets = new Insets( 56,16,0,0 );
constraints.gridwidth = 1;
constraints.weightx = 0;
constraints.weighty = 0;
constraints.fill = GridBagConstraints.NONE;
editierenPanel.add(editieren, constraints);
editieren.addActionListener(new editierenListener());

abbrechen = new JButton("abbrechen");
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 0;
constraints.weighty = 0;
constraints.fill = GridBagConstraints.NONE;
editierenPanel.add(abbrechen, constraints);
abbrechen.addActionListener(new abbrechenListener());

frame.getContentPane().add(editierenPanel);

//die Groeße des frames wird festgelegt
frame.setSize(450, 350);

frame.setResizable(false);

//der frame wird sichtbar gemacht
frame.setVisible(true);


}

class editierenListener implements ActionListener{

    public void actionPerformed(ActionEvent event){

      String ausgewaehlterkalender = (String)kalender.getSelectedItem();

      int antwort = JOptionPane.showConfirmDialog(frame, "Wollen Sie ''" + ausgewaehlterkalender + "'' editieren?",
      "", JOptionPane.YES_NO_OPTION);
      if (antwort == JOptionPane.YES_OPTION) {


              try {
                        // Zunächst benötigen wir eine Verbindung mit der Verwaltung.
                        Verwaltung verwaltung =
                                (Verwaltung)Naming.lookup("rmi:/localhost:1099/DRM");

                        /*
                         * Wenn wir hier ankommen, dann besteht eine Verbinung zum Server.
                         * Wäre die Verbindung nicht zustande gekommen, so wäre eine Exception
                         * ausgeworfen worden und das Programm wäre in den entsprechenden
                         * Catch-Block (s.u.) gesprungen.
                         */
                        System.out.println("Verbindung hergestellt...");

                        Vector<Kalender> ergebnis1 = verwaltung.getAll_Kalender();
                        Vector inhalte = new Vector();

                        //Hier wird Jedes Objekt des Vectors auf ggf. Titel, Name, Vorname überprüft und mit dem
                        //zuvor ausgelesenen String der Combobox verglichen. Wird die entsprechende kalender
                        //der Combobox gefunden wird von dieser die ID ausgelesen.
                        for ( Kalender test : ergebnis1 ) {
                            if (test != null ) {
                                String bezeichnungKalender  = test.get_bezeichnung();
                                if (bezeichnungKalender.equals(ausgewaehlterkalender)) {
                                    int kalenderID = test.get_kalender_id();

                                    // Hier werden die Daten der entsprechende kalender aus der DB gewählt. Selektiert werden diese
                                    // anhand der davor festgestellten ID.
                                    Kalender ka = verwaltung.findbyid_Kalender(kalenderID);
                                    ID = ka.get_kalender_id();
                                    Bezeichnung = ka.get_bezeichnung();
//                                    Besitzer = ka.get_besitzer();
//                                    Zugriffsberechtigte= ka.get_zugriffsberechtigte();
//                                    System.out.println(ID + Titel + Anrede + Vorname + Name );
                                    break;

                                    //Es wird die enstprechende Maske der kalender aufgerufen um die Daten zu ändern oder aktualisieren

                                }
                            }
                        }

                       kalenderAktualisieren KaEd = new kalenderAktualisieren();
                       KaEd.kalenderAktualisieren();
                       KaEd.bezeichnungField.setText(Bezeichnung);
//                       KaEd.besitzerField.setText(Besitzer);
//                       KaEd.zugriffsberechtigteField.setText(Zugriffsberechtigte);
//                       KaEd.idField.setText(ID+"");

                }
                catch (MalformedURLException murle) {
                        System.out.println("MalformedURLException");
                        System.out.println(murle);
                }
                catch (RemoteException re) {
                        System.out.println("RemoteException");
                        System.out.println(re);
                }
                catch (NotBoundException e) {
                        System.out.println("NotBoundException");
                        System.out.println(e);
                }
                catch (NullPointerException np) {
                        System.out.println("NullPointerException");
                        System.out.println(np);
                }

//          JOptionPane.showMessageDialog(frame,"kalender angelegt!");
//          frame.setVisible(false);fgfgfggf
      }

      else if (antwort == JOptionPane.NO_OPTION)
      frame.setVisible(false);
}
}


class abbrechenListener implements ActionListener{

     public void actionPerformed(ActionEvent event){

      int antwort = JOptionPane.showConfirmDialog(frame, "Wollen Sie den Vorgang wirklich beenden?",
      "", JOptionPane.YES_NO_OPTION);
      if (antwort == JOptionPane.YES_OPTION)
      frame.setVisible(false);
    }
}
}

